package com.quad.innovators.salesease.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.quad.innovators.salesease.common.result.PageResultBean;
import com.quad.innovators.salesease.model.common.Option;
import com.quad.innovators.salesease.model.entity.SysRole;
import com.quad.innovators.salesease.model.form.SysRoleForm;
import com.quad.innovators.salesease.model.query.SysRolePageQuery;
import com.quad.innovators.salesease.model.vo.SysRolePageVO;

import java.util.List;

public interface SysRoleService extends IService<SysRole> {

    /**
     * 角色分页列表
     *
     * @param queryParams 参数
     * @return 结果
     */
    PageResultBean<SysRolePageVO> getRolePage(SysRolePageQuery queryParams);


    /**
     * 角色下拉列表
     *
     * @return 结果
     */
    List<Option<String>> listRoleOptions();

    /**
     *
     * @param roleForm 参数
     * @return 结果
     */
    boolean saveRole(SysRoleForm roleForm);

    /**
     *
     * @param roleForm 参数
     * @return 结果
     */
    boolean updateRole(String roleCode, SysRoleForm roleForm);

    /**
     * 获取角色表单数据
     *
     * @param roleCode 角色ID
     * @return  {@link SysRoleForm} – 角色表单数据
     */
    SysRoleForm getRoleForm(String roleCode);

    /**
     * 修改角色状态
     *
     * @param roleCode 角色ID
     * @param status 角色状态(1:启用；0:禁用)
     * @return {@link Boolean}
     */
    boolean updateRoleStatus(String roleCode, Integer status);

    /**
     * 批量删除角色
     *
     * @param codes 角色ID，多个使用英文逗号(,)分割
     * @return 结果
     */
    boolean deleteRoles(String codes);


    /**
     * 获取角色的菜单ID集合
     *
     * @param roleCode 角色ID
     * @return 菜单ID集合(包括按钮权限ID)
     */
    List<String> getRoleMenuIds(String roleCode);


    /**
     * 修改角色的资源权限
     *
     * @param roleCode 参数
     * @param menuCodes 参数
     * @return 结果
     */
    boolean assignMenusToRole(String roleCode, List<String> menuCodes);
}
